import pandas as pd
import numpy as np
# (1)一维对象
# 创建 sr
v = [ 53, None, 72, 82 ]
sr = pd.Series( v, index=['1 号', '2 号', '3 号', '4 号'] )
print(sr)
"""
1 号    53.0
2 号     NaN
3 号    72.0
4 号    82.0
dtype: float64
"""
# 用常数（0）填充
print(sr.fillna(0))
"""
1 号    53.0
2 号     0.0
3 号    72.0
4 号    82.0
dtype: float64
"""
# 用常数（均值）填充
print(sr.fillna(np.mean(sr)))
"""
1 号    53.0
2 号    69.0
3 号    72.0
4 号    82.0
dtype: float64
"""
# 用前值填充
print(sr.fillna(method='ffill'))
"""
1 号    53.0
2 号    53.0
3 号    72.0
4 号    82.0
dtype: float64
"""
# 用后值填充
print(sr.fillna(method='bfill'))
"""
1 号    53.0
2 号    72.0
3 号    72.0
4 号    82.0
dtype: float64
"""


# （2）二维对象
# 设定 df
v = [ [None, None], [64, None], [72, 3], [82, 4] ]
i = [ '1 号', '2 号', '3 号', '4 号' ]; c = [ '年龄', '牌照' ]
df = pd.DataFrame( v, index=i, columns=c )
print(df)
"""
       年龄   牌照
1 号   NaN  NaN
2 号  64.0  NaN
3 号  72.0  3.0
4 号  82.0  4.0
"""
# 用常数（0）填充
print(df.fillna(0))
"""
       年龄   牌照
1 号   0.0  0.0
2 号  64.0  0.0
3 号  72.0  3.0
4 号  82.0  4.0
"""
# 用常数（均值）填充
print(df.fillna( np.mean(df) ))
"""
      年龄    牌照
1 号  45.0  45.0
2 号  64.0  45.0
3 号  72.0   3.0
4 号  82.0   4.0
"""
# 用前值填充
print(df.fillna(method='ffill'))
"""
       年龄   牌照
1 号   NaN  NaN
2 号  64.0  NaN
3 号  72.0  3.0
4 号  82.0  4.0
"""
# 用后值填充
print(df.fillna(method='bfill'))
"""
       年龄   牌照
1 号  64.0  3.0
2 号  64.0  3.0
3 号  72.0  3.0
4 号  82.0  4.0
"""
